perm filename I.AMC[IP,SYS] blob
sn#691678 filedate 1982-12-19 generic text, type T, neo UTF8
Universal I - IMP SYSTEM PARAMETER FILE FOR 6.02 MONITOR - V1550/545
SEARCH F,S
DEBUG==1 ;DEBUGGING
;[96bit] edited in feb. 1980 by provan at cmu
; to handle 96 bit imp leaders
;(236) changed into a universal file by provan at avsail
;HERE DEFINE NONSTANDARD PARAMETERS
; Local revision history
;(236) 8-jan-81, provan
; edit type: enhancement
; modules affected: I, ImpSer, NetCon
; symptom: imp code is clumsy to compile.
; diagnosis: I.mac is not a universal file.
; cure: bring the imp code into the 1970's by making i.mac a universal.
; End of Local Revision History
;SOME DEFINITION DEFINITIONS:
DEFINE XXD(A,N,C)<
A==N
..XX==N>
DEFINE XXP(A,C)<
A==<..XX==..XX+1>>
DEFINE XXS(A,C)<
A==:<..XX==..XX+1>>
DEFINE XX(A,N,C)<
IFNDEF A,<A==N>>
DEFINE XXX(A,C)<
A==..XX>
DEFINE XXM(A,N,C)<
A==..XX+1
..XX==..XX+N>
;[96bit] define some bit, byte and word counts.
sall ;[96bit] avoid listing the repeat
radix 10 ;[96bit] do this in base 10
.szimp==96 ;[96bit] bits in the standard imp leader
.szncp==40 ;[96bit] bits in the standard ncp leader
.szhst==24 ;[96bit] bits in host field of imp leader
.szlnk==8 ;[96bit] bits in link number (currently, first
; 8 bits of the "message id" field.)
.szpad==16 ;[96bit] number of bits in the bytes of padding
; allowed by the imp no-op code
PadMax==9 ;[96bit] maximum number of pads allowed by no-op
;[96bit] initialize for computing the number of pad bytes we need
.pads==0 ;[96bit] initialize pads needed to 0
;[96bit] compute <imp leader size> modulo <pdp-10 word size>
.scratch==<.szimp + .szncp> - <<<.szimp + .szncp>/36>*36>
repeat PadMax,< ;[96bit] add pads until satisfied
ifn .scratch,< ; are there still some bits?
.pads==.pads+1 ; yes: add another pad
.scratch==.scratch+.szpad ; and add the bits
ifge .scratch-36,< ; another word crossed?
.scratch==.scratch-36 ; yes: cut back
>
>
>
ifn .scratch,<printx cannot get to even word boundary with imp padding>
.wdimp==<.szimp+35>/36 ;[96bit] words needed for the imp leader
.wdled==<.szimp + .szncp + <.pads * .szpad> + 35>/36
;[96bit] words needed for the entire leader
;[96bit] define some masks used.
im.hsm==<1 ← .szhst> - 1 ;[96bit] standard host mask
im.lnm==<1 ← .szlnk> - 1 ;[96bit] standard link mask
im.hst==im.hsm ← .szlnk ;[96bit] standard host mask for DDB
im.lnk==im.lnm ;[96bit] standard link mask for DDB
radix 8 ;[96bit] leave base 10
xall ;[96bit] resume listing repeats and macro expansions
;IMP DDB DEFINITIONS
;DEVIOS BITS(RIGHT HALF)
XX IODATA,2000, THERE IS DATA READY FOR INPUT
XX IONRFM,1000, NOT READY FOR NEXT MESSAGE
XX IO.INS,400, INS RECEIVED ON CONNECTION
XX IO.INR,200, INR RECEIVED ON CONNECTION
;(LEFT HALF) BITS 13-17 STANDARD (40, 20,10, 4, 2, 1)
XX IOBRKF,100, BREAK CHAR SEEN IN ASCII
;IMP SPECIFIC STUFF
XXD IMPCLR,DEVLSD+1, WHERE TO START CLEARING
XXX IMPIOS, IMP NCP STATUS
;LEFT HALF COPIED IN DEVIOS LEFT HALF
XX INCPWT,200, INPUT NCP WAIT
XX ONCPWT,400, OUTPUT NCP WAIT
XX OBITWT,2000, ALLOCATION WAIT
XX ORFMWT,4000, OUTPUT RFNM WAIT
XX IDATWT,10000, INPUT DATA WAIT
XX ALLWAT,16600, ALL WAIT BITS
;RIGHT HALF
XX EXTBIT,1B35, EXEC TIMEOUT BIT (FOR INCREMENTING)
XX EXTOVF,100B35, EXEC TIMEOUT OVERFLOW BIT
XX EXTMSK,177B35, EXEC TIMEOUT FIELD
XX TIMFLG,1B28, USER TIMEOUT FLAG
XX EXCFLG,1B27, MARKS AN EXEC SERVER TELNET SOCKET
XXP IMPBYT, (150) RESIDUAL BYTE COUNT (ASYNCH I/O)
XXP IMPPTR, (150) POINTER TO RESIDUAL BYTES
XXP OCLEAR, CLEAR FROM HERE WHEN WIPING OUTPUT
XXX OALBIT, TRANSMIT BIT ALLOCATION
XXP OALMES, TRANSMIT MESSAGE ALLOCATION
XXP OSKLCL, MY TRANSMIT SOCKET
XXP OSKRMT, HIS RECEIVE SOCKET
XXP OSTAT,< TRANSMIT SOCKET STATE, FLAGS>
;LEFT HALF
XX TRCENB,1B0, FLAG TO SEND TRACE BIT IN DATA MESSAGES
define picpsk<picpsk:: point 7,ostat(f),7>
;[96bit] icp socket number
XX ORFNOV,40B17, RFNM TIMEOUT FLAG (32 SECONDS)
XX ORFMSK,177B17, RFNM TIMEOUT CLOCK MASK
;RIGHT HALF
XX ORFNMW,1B18, WAITING FOR A RFNM ON THE LINK
XX BYTMSK,<<1←8-1>←<↑D35-↑D29>>, BIT MASK FOR THE
; BYTE SIZE FIELD IN THE STATUS WORD
DEFINE POBYTE<POBYTE:: POINT 8,OSTAT(F),29>
XX STTMSK,↑O77, MASK FOR THE STATE CODE
DEFINE POSTAT<POSTAT:: POINT 6,OSTAT(F),35>
xxm orfcq,3, [96bit] rfc queue for transmit socket
xx .rqhst,0, [96bit] host word offset for rfc queue
xx .rqlnk,1, [96bit] link number word
xx .rqsoc,2, [96bit] socket number
XXP OBFWD, TOP OF AREA USED BY NCP OUTPUT
xxx oleadr, [96bit] contains host/link number
DEFINE POHOST<POHOST:: POINT .szhst,OLEADR(F),35 - .szlnk>
DEFINE POLINK<POLINK:: POINT .szlnk,OLEADR(F),35>
XXP OBFBIT, REMEMBERS BITS SENT FOR FLOW CONTROL
XXP OBFLST, ADDRESS OF LAST BUFFER IN OUTPUT STREAM
XXP OBFFST, ADDRESS OF FIRST BUFFER IN OUTPUT STREAM
XXP OBFTHS, ADDRESS OF BUFFER CURRENTLY BEING FILLED
XXP OBFPC, ADDRESS OF ROUTINE TO GET NEXT BYTE
XXP OBFBC, BYTE COUNT REMAINING IN BUFFER
XXP OBFPNT, ADDRESS OF LAST WORD FILLED IN BUFFER
XX OBFWDS,..XX-OBFWD+1, LENGTH OF OUTPUT DDB USED BY NCP
XXX OCLEND, STOP CLEARING HERE WHEN WIPING OUTPUT
XXP OTTYC, TEMPORARY TTY CHARACTER STORAGE
XXP ITTYC, TEMPORARY CHARACTER SAVE AREA FOR TTY LINK
REPEAT 0,< ;SOMEDAY, INTERRUPTS WILL ACTUALLY GET IMPLEMENTED
XXP INTRPT, DISPATCH ADDRESSES FOR INTERRUPTS
>
XXP TTYLIN, TTY FLAGS AND LDB ADDRESS
XX TTYJOB,1B18, IMP IS CONNECTED TO A TTY CONTROLLING A JOB
XX TTYPTR,1B19, TTY PRINTER IS ATTACHED
XX TTYKBD,1B20, TTY KEYBOARD IS ATTACHED
XX TTYCRL,1B21, LAST CHARACTER WAS CR
XX TTYXWT,1B22, JOB WAITING UNTIL CROSSPATCH BROKEN
;THE FOLLOWING ARE THE IMP REQUEST FLAGS, INDICATING WHAT CLOCK-LEVEL
; SERVICES MUST BE PERFORMED FOR THIS DDB.
XX IRTIIO,1B23, TTY INPUT TO CROSSPATCHED IMP OUTPUT
XX IRIITO,1B24, IMP INPUT TO CROSSPATCHED TTY OUTPUT
XX IRTOIO,1B25, OUTPUT FROM IMP TTY TO IMP
XX IRIITI,1B26, INPUT FROM IMP TO TTY LINE
XX TTYRQF,IRTIIO!IRIITO!IRTOIO!IRIITI, ALL TTY REQUEST FLAGS
XX SYNTIM,17B27, SYNCH TIMEOUT FIELD FOR TELNET
DEFINE PSYNTM<PSYNTM:: POINT 4,TTYLIN(F),11>
XX SYNTMX,17, TIMEOUT INTERVAL IN SECONDS
XXP TELWRD, TELNET CONTROL STUFF
XX IACFLG,1B0, CURRENTLY INTERPRETING COMMAND (MUST BE SIGN)
XX LSGAFG,1B1, LOCAL SUPPRESS-GA OPTION IN EFFECT
XX FSGAFG,1B2, FOREIGN SUPPRESS-GA OPTION IN EFFECT
XX INSWAT,1B3, HAVE DATA MARK--WAITING FOR INS
XX SYNCLR,1B4, CLEAR TTY OUTPUT BUFFER ON SYNCH
XX INSCNT,17B9, RECEIVED INS COUNTER FIELD
DEFINE PINSCT<PINSCT:: POINT 4,TELWRD(F),9>
XX OPTCHR,377B17, TELNET OPTION CHARACTER BEING PROCESSED
DEFINE PTLNOP<PTLNOP:: POINT 8,TELWRD(F),17>
;BITS 18-35 ARE FOR THE TELNET COROUTINE LINKAGE
XXP ECPEND, NO. OF ECHO NEGOTIATION REPLIES PENDING
XXP TELOWD, FOR TELNET OUTPUT CODE AND MORE BITS
XX XPTECH,1B1, EXPECTING REPLY TO ECHO NEGOTIATION
XX XPTSGA,1B2, EXPECTING REPLY TO SUPRESS GA NEGOTIATION
XX LLCPWN,1B3, FLAG TO PERMIT TOTAL ECHO SUPRESSION
XX IECHO,1B4, BIT SET BY TALK IMPUUO - DISALLOWS SERVER ECHOING
XX TELOMR,1B5, TELNET OUTPUT COROUTINE HAS MORE TO SAY
DEFINE PTOFNC<PTOFNC:: POINT 8,TELOWD(F),17>
;BITS 18-35 ARE TELNET OUTPUT COROUTINE ADDRESS
XXP ICLEAR, CLEAR FROM HERE TO WIPE INPUT
XXX IALBIT, NUMBER OF BITS ALLOCATED TO SENDER
XXP IALMES, NUMBER OF MESSAGES ALLOCATED TO SENDER
XXP ISKLCL, MY RECEIVE SOCKET
XXP ISKRMT, HIS SEND SOCKET
XXP ISTAT,< STATE, STATUS OF INPUT SOCKET>
DEFINE PIALMS<PIALMS: POINT 6,ISTAT(F),5> ;DESIRED MSG ALLOCATION
DEFINE PIALBT<PIALBT:: POINT 16,ISTAT(F),21> ;DESIRED BIT ALLOCATION
DEFINE PIBYTE<PIBYTE:: POINT 8,ISTAT(F),29>
DEFINE PISTAT<PISTAT:: POINT 6,ISTAT(F),35>
xxm irfcq,3, [96bit] rfc queue for input socket
xx .rqhst,0, [96bit] host number offset for rfc queue
xx .rqbyt,1, [96bit] byte size
xx .rqsoc,2, [96bit] socket number
XXP IBFWD, TOP OF AREA USED BY NCP INPUT
xxx ileadr, [96bit] host/link from last leader
DEFINE PIHOST<PIHOST:: POINT .szhst,ILEADR(F),35 - .szlnk>
DEFINE PILINK<PILINK:: POINT .szlnk,ILEADR(F),35>
XXP IBFTHS, ADDRESS OF BUFFER CURRENTLY BEING EMPTIED
XXP IBFLST, ADDRESS OF LAST BUFFER IN STREAM
XXP IBFPNT, ADDRESS OF LAST WORD PLACED IN BUFFER
XXP IBFPC, ADDRESS OF NEXT BYTE INPUT ROUTINE
XXP IBFBC, COUNT OF BITS LEFT IN THE BUFFER
XXP IBFBIT, COUNT OF BITS INPUT BUT NOT REALLOCATED
XXP IBFMES, SAME FOR MESSAGE COUNT
XX IBFWDS,..XX-IBFWD+1, SIZE OF AREA USED BY NCP FOR INPUT
XXX ICLEND, STOP CLEARING HERE WHEN WIPING INPUT
XXP ISHREG, TEMP DATA STORAGE FOR ASSEMBLING A WORD
XXP USRPAR, ARBITRARY USER-DEFINED CONNECTION PARAMETERS
XXS IMPDDS, LENGTH OF IMP DDB
;SOME MACROS
PI== 4 ;ELSE MACRO WON'T ASSIGN VALUE UNTIL PASS 2
;(701: use ScnOff) DEFINE NOINTERRUPT <CONO PI,PI.TFP+IMPBTS##>
;(701: use ScnOn) DEFINE INTERRUPT <CONO PI,PI.TNP+IMPBTS##>
;MACRO TO CHECK FOR IMP INTERRUPT CHANNEL TURNED OFF AND HALT IF NOT.
; USE AT THE START OF CRITICAL ROUTINES THAT MUST BE CALLED WITH
; INTERRUPTS OFF.
DEFINE CHKINT <
IFN DEBUG,<
CONSZ PI,IMPBTS## ;SKIP IF IMP CHANNEL OFF
JSR INDERR ;HALT IF NOT
>>
;SOME TABLE BUILDING MACROS:
DEFINE ENTRI(A)<
IFE ..N&1,<
DEFINE ..XWD(B)<
A ,, B
>>
IFN ..N&1,<
..XWD A
DEFINE ..XWD(B)<>
>
..N==..N+1
>
DEFINE TABLE<
..N==0
DEFINE ..XWD(B)<>
>
DEFINE TABEND(A)<
IFNB <A>,<..XWD A>
IFB <A>,<..XWD 0>
>
;OTHER PARAMETERS
XX NCPLNK,0, LINK DEDICATED TO NCP
XX NCPBYT,↑D8, BYTE SIZE ON NCP CONNECTION
XX LNKMIN,↑D2, SMALLEST LEGAL DATA LINK
XX LNKMAX,↑D71, LARGEST LEGAL DATA LINK
XX LNKXP1,↑D192, FIRST EXPERIMENTAL LINK NUMBER
XX LNKXP2,↑D255, LAST EXPERIMENTAL LINK NUMBER
XX im.pri,1b32, [96bit] PRIORITY BIT (HOST-IMP MESSAGES)
XX im.trc,1b20, [96bit] TRACE BIT
XX im.oct,1b21, [96bit] OCTAL BIT
XX UBUFL,↑D128, USER BUFFER SIZE
XX ICPBYT,↑D32, BYTE SIZE FOR ICP
XX ICPDAT,↑D32, MINIMUM ALLOCATION FOR ICP
XX HS.TIK,↑D60, INTERVAL ON WHICH TO CHECK EACH HOST
XX .ALBTL,↑D80*↑D8, TELNET BIT ALLOCATION
XX .ALMSL,↑D80, TELNET MESSAGE ALLOCATION
XX .ALBTD,↑D32000, BINARY BIT ALLOCATION
XX .ALMSD,↑D16, BINARY MESSAGE ALLOCATION
XX .ALBTS,↑D500, STARTUP BIT ALLOCATION
XX .ALMSS,1, STARTUP MESSAGE ALLOCATION
XX .ALBTX,↑D32000, MAXIMUM BIT ALLOCATION
XX .ALMSX,↑D80, MAXIMUM MESSAGE ALLOCATION
COMMENT \
WORST CASE BUFFER REQUIREMENTS PER SOCKET ARE
(B + 108)/S + M + 1 FOR INPUT AND 8024/S FOR
OUTPUT, WHERE B IS THE BIT ALLOCATION, S IS
THE BUFFER SIZE IN BITS, AND M IS THE MESSAGE
ALLOCATION.
\
XX ICPMAX,↑D255, HIGHEST LEGAL ICP SOCKET NUMBER
XX FREMIN,1000400, FIRST SOCKET IN FREE SOCKET POOL
XX FRELSH,9, SHIFTS TO PUT GENERATOR NUMBER INTO SOCKET
XX FREMSK,777, MASK FOR GENERATOR NUMBER
;TELETYPE STUFF
XX .CHETX,"C"&↑O37, ↑C (ETX) PDP-10 ESCAPE
XX .CHCNO,"O"&↑O37, ↑O SUPRESSES OUTPUT
XX .CHDLE,"N"&↑O37, ↑N QUOTES NEXT CHARACTER
XX .CHCNC,"←"&↑O37, ↑← (US) IS LOCAL ESCAPE CHARACTER
XX .CHESC,"↑"&↑O37, ↑↑ (RS) IS NETWORK ESCAPE CHARACTER
XX .CHLF,↑O12, LINE FEED
XX .CHCR,↑O15, CARRAIGE RETURN
XX .CHEOL,.CHLF, LINE FEED IS STANDARD END OF LINE
;TELNET PROTOCOL STUFF
.TNIAC==:↑D255 ;INTERPRET FOLLOWING AS COMMAND
.TNSE==↑D241 ;END SUBNEGOTIATION PARAMETERS
.TNNOP==↑D241 ;NO-OP
.TNDM== ↑D242 ;DATA MARK
.TNBRK==↑D243 ;BREAK (OR REVERSE BREAK)
.TNIP== ↑D244 ;INTERRUPT PROCESS
.TNAO==:↑D245 ;ABORT OUTPUT
.TNAYT==↑D246 ;ARE YOU THERE
.TNEC== ↑D247 ;ERASE CHARACTER
.TNEL== ↑D248 ;ERASE LINE
.TNGA== ↑D249 ;GO AHEAD
.TNSB== ↑D250 ;SUB-NEGOTIATE
.TNWIL==:↑D251 ;WILL
.TNWNT==:↑D252 ;WON'T
.TNDO== ↑D253 ;DO
.TNDNT==↑D254 ;DON'T
.TOBIN==0 ;TRANSMIT BINARY OPTION
.TOECH==:1 ;ECHO OPTION
.TORCP==2 ;RECONNECTION PROTOCOL OPTION
.TOSGA==3 ;SUPPRESS GO-AHEAD OPTION
.TOAMS==4 ;APPROXIMATE MESSAGE SIZE OPTION
.TOSTT==5 ;STATUS OPTION
.TOTIM==6 ;TIMING MARK OPTION
.TORCT==7 ;REMOTE CONT. TRANS AND ECHOING
.TOXOL==↑D255 ;EXTENDED OPTIONS LIST OPTION
;STILL MORE
XX ERRMAX,↑D15, MAXIMUM NUMBER OF COUNTED ERROR MESSAGES
xx impmax,↑d8159, [96bit] abs. max. message size for imp
xx maxmes,impmax-<.szimp+.szncp>, [96bit] max. size available
XX MRKFLG,↑O400000, FLAG TO SIGNAL FIRST BUFFER OF A MESSAGE
XX PADFLG,↑O200000, FLAG TO SIGNAL LAST BUFFER OF A MESSAGE
xx mesdln,↑d16, [96bit] space for imp-host message type
; counts in gettab tables
; must be at least as big as
; MESDSP in IMPSER
;[96bit] new format imp header has the first 20 bits constant.
xx newfrm,↑d15b7, [96bit] decimal 15 in second 4 bit byte
end ;(236) universal files have "END"s